<template>
    <div class="doorClass">
        <div class="top">
            <van-icon name="arrow-left" size="20px" @click="goback()" />
            <div>门禁种类</div>
        </div>
        <div class="mian">
            <!-- <ul>
                <li>
                    <img src="../assets/img/key.png" alt="">
                    <span>小区大门</span>
                    <span class="open">开锁</span>
                </li>
            </ul> -->
            <van-cell-group>
                <van-cell v-for="(item,index) in doorClassList" :key="index">
                    <!-- 使用 title 插槽来自定义标题 -->
                    <template slot="title">
                        <img src="../assets/img/key.png" alt="">
                        <span>{{item.deviceName}}</span>
                        <span class="open" @click="throttle(item.depId,item.deviceId,item.guid,item.unitId)">开门</span>
                    </template>
                </van-cell>
            </van-cell-group>


        </div>
    </div>
</template>
<script>
    import { mapState, mapMutations } from 'vuex'
    import { Step, Steps } from 'vant'
    import { Icon } from 'vant'
    import { Toast } from "vant"

    export default {
        // 当前组件的名称
        name: 'usehelp',

        data() {
            return {
                doorClassList: [],
                wait: 300,
                lastTime: 0,
            }
        },

        // 在当前组件中添加其他的自定义组件
        components: {

        },

        /*
            在computed中添加mapState
            如果computed中只有一个辅助函数，后面可以直接写成函数名
        */
        computed: mapState(['userid']),
        methods: {
            throttle(depId, deviceId, guid, unitId) {

                //定义一个事件为0，第一次肯定会执行
                // console.log(nowTime)
                //拿到从1970年到现在的时间戳
                let nowTime = new Date().getTime()
                console.log(nowTime)
                // alert("执行开门")
                //在这个时间内我才触发事件处理函数，是不是起到节流的目的呢。
                if (nowTime - this.lastTime > 10000) {
                    console.log(this.lastTime)
                    this.opendoor(depId, deviceId, guid, unitId)
                    this.lastTime = nowTime
                }else{
                    console.log("时间没到")
                    Toast("请勿频繁点击开门")
                }

            },
            getDoorClass() {
                this.$axios.get("/open/doorGuardlist", {
                    params: {
                        user_id: this.userid
                    }
                }).then(res => {
                    console.log("门禁类型",res);
                    
                    const { status, data, message } = res
                    if (status == 200 && data.code == 200) {
                        this.doorClassList = data.list
                    } else {
                        Toast(message)
                    }
                })
            },
            goFeedback() {
                this.$router.push('feedback')
            },

            goback() {
                this.$router.back()
            },
            opendoor(depId, deviceId, guid, unitId) {
                this.$axios.get("/open/opentherdoor", {
                    params: {
                        depid: depId.toString(),
                        deviceId: deviceId.toString(),
                        guid,
                        unitid: unitId,
                        userid: this.userid
                    }
                }).then(res => {
                    Toast(res.message)
                })
            }

        },
        // 生命周期函数,创建实例,可以获取this,但DOM节点还没有创建出来
        created() {
            console.log('created', this.$el)
        },
        // 生命周期函数,当前组件上的所有DOM节点都已经创建出来
        mounted() {


            console.log('mounted', this.$el)
            this.getDoorClass()


        },
        // 生命周期函数,当数据发生改变并且导致视图发生相应的改变
        updated() {
            // console.log('updated')
        },
        // 生命周期函数,组件被销毁
        destroyed() {
            console.log('destroyed')
        },
        // 生命周期函数,进入缓存组件
        activated() {
            console.log('activated')
            this.getExamine()
            // 再次回来的时候,直接滚动到之前离开时候保存的位置


            // 如果每次进入缓存组件的时候，需要实时更新当前组件中的内容，可以将这些更新代码写在activated

            // 请求获取用户信息
            // this.reqUserInfo()
            // this.$store.dispatch('changeUserInfo2')

        },
        // 生命周期函数,离开缓存组件
        deactivated() {
            console.log('deactivated')

            // 不要尝试去获取页面的scrollTop,因为页面只有一个,跳转到新的路由,页面的scrollTop会变成0
            // 所以,在离开的时候,把当前组件的scrollTop保存下来,赋给一个新的变量
            // this.cache_scrollTop = this.scrollTop
        },
        // 离开路由之前,它会在deactivated之前调用
        beforeRouteLeave(to, from, next) {
            console.log('beforeRouteLeave')

            // 1.获取页面的scrollTop,赋给一个新的变量
            // this.cache_scrollTop = document.documentElement.scrollTop || document.body.scrollTop

            // 2.获取顶部状态栏距离父元素底部的距离,赋给一个新的变量


            // 必须调用next,否则就不会离开当前路由
            next()
        }
    }
</script>

<!-- 添加scoped属性,将样式的作用域限制在当前组件内,不会影响子组件 -->
<style lang="scss" scoped>
    .top {

        height: 40px;
        line-height: 40px;
        position: relative;
        font-size: 16px;
        border-bottom: 1px solid #999;
        margin-bottom: .3rem;
    }

    .top div {
        text-align: center;
    }

    .van-icon-arrow-left {
        position: absolute;
        top: 10px;

    }

    .mian {
        /* width: 90%; */
        margin: 10px auto 20px;

        /* ul {

        } */
    }

    .van-cell__title {
        height: .72rem;
        line-height: .72rem;
        display: flex;
        justify-content: space-between;
        align-items: center;
    }

    .open {
        width: 16%;
        text-align: center;
        color: white;
        background-color: #2D84E5;
        font-size: .4rem;
        border-radius: 4px;
    }
</style>